package com.rshang.rsdp.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.rshang.rsdp.bean.DataGrid;
import com.rshang.rsdp.bean.Response;
import com.rshang.rsdp.entity.TbUser;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author zhangjun
 * @since 2017-07-21
 */
public interface ITbUserService extends IService<TbUser> {

    /**
     * 获取用户角色信息
     *
     * @param userid 用户id
     *
     * @return List<String>
     */
    public List<String> getRolesByUserId(String userid);

    /**
     * 获取用户权限信息
     *
     * @param userid 用户id
     *
     * @return List<String>
     */
    public List<String> getAuthsByUserId(String userid);


    /**
     * 用户登陆验证
     *
     * @param request HttpServletRequest对象
     *
     * @return Response
     */
    public Response userLogin(HttpServletRequest request);


    /**
     * 验证码图片生成方法
     *
     * @param request  HttpServletRequest对象
     * @param response HttpServletResponse对象
     *
     * @throws Exception
     */
    public void createKaptcha(HttpServletRequest request, HttpServletResponse response) throws Exception;

    /**
     * 获取用户左侧菜单json字符串
     *
     * @param userid 用户id
     *
     * @return String
     * @throws JsonProcessingException
     */
    public String getJsonMenuByUserId(String userid) throws JsonProcessingException;

    /**
     * 获取用户模块信息
     *
     * @param userid 用户id
     *
     * @return String
     */
    public List<String> getModulesByUserId(String userid);

    /**
     * 用户管理系统分页查询
     *
     * @param page    分页对象
     * @param request HttpServletRequest对象
     *
     * @return DataGrid
     */
    public DataGrid getUserPageList(Page<HashMap> page, HttpServletRequest request);

    /**
     * 用户数据保存方法
     *
     * @param request HttpServletRequest对象
     * @param czr     操作人
     *
     * @return Response
     */
    public Response addSave(HttpServletRequest request, String czr);

    /**
     * 用户编辑数据保存方法
     *
     * @param request HttpServletRequest对象
     * @param czr     操作人
     *
     * @return Response
     */
    public Response myEditSave(HttpServletRequest request, String czr);

    /**
     * 用户信息修改保存方法
     *
     * @param request HttpServletRequest对象
     * @param czr     操作人
     *
     * @return Response
     */
    public Response editSave(HttpServletRequest request, String czr);


    /**
     * 校验用户名
     *
     * @param request HttpServletRequest对象
     *
     * @return Response
     */
    public Response checkUserName(HttpServletRequest request);


    /**
     * 删除用户
     *
     * @param request HttpServletRequest对象
     * @param czr     操作人
     *
     * @return Response
     */
    public Response deleteUser(HttpServletRequest request, String czr);

    /**
     * 初始化密码
     *
     * @param request HttpServletRequest对象
     * @param czr     操作人
     *
     * @return Response
     */
    public Response initPwd(HttpServletRequest request, String czr);

    /**
     * 根据id获取修改用户信息
     *
     * @param userId 用户id
     *
     * @return Map
     */
    public Map get(String userId);

    /**
     * 获取所有用户列表
     *
     * @param czr 用户id
     *
     * @return List<HashMap>
     */
    public List<HashMap> getYxUserList(String czr);
}
